package JVM.第03篇_运行时内存篇;

/**
 * ●在这个线程上正在执行的每个方法都各自对应一个栈帧(Stack Frame)
 * ●栈帧是一个内存区块，是一个数据集，维系着方法执行过程中的各种数据信息。
 *
 * 在一条活动线程中，一个时间点上，只会有一个活动的栈帧。
 * 即只有当前正在执行的方法的栈帧(栈顶栈帧)是有效的，
 * 这个栈帧被称为当前栈帧(Current Frame) ，
 * 与当前栈帧相对应的方法就是当前方法(Current Method)，
 * 定义这个方法的类就是当前类(Current Class) 。
 *
 * 如果在该方法中调用了其他方法，对应的新的栈帧会被创建出来，放在栈的顶端，成为新的当前帧。
 * 执行引擎运行的所有字节码指令只针对当前栈帧进行操作。
 *
 * 每个栈帧中存储着:
 * ●局部变量表(Local Variables)
 * ●操作数栈(Operand Stack) (或表达式栈)
 * ●动态链接(Dynamic Linking) (或指向运行时常量池的方法引用)
 * ●方法返回地址( Return Address) (或方法正常退出或者异常退出的定义)
 * ●一些附加信息
 *
 * 栈帧中主要保存3类数据:
 * 本地变量(Local Variables) :输入参数和输出参数以及方法内的变量;
 * 栈操作(Operand Stack) :记录出栈、入栈的操作;
 * 栈帧数据(Frame Data) :包括类文件、方法等等。
 *     刚开始执行main方法               main栈帧           压入栈中
 *     main调用StackText方法           StackText栈帧      压入栈中
 *     StackText调用changeValue1方法   changeValue1栈帧   压入栈中
 *     changeValue1方法执行完后  弹出changeValue1  继续执行StackText...
 * *********************************
 * 程序 = 算法+数据结构
 * 程序 = 框架+业务逻辑//工作中
 * 队列（FIFO）先进先出
 * 栈（FILO）先进后出
 * java方法   叫栈帧
 * **********************************
 */
public class C0_栈的单位_栈桢 {

}
